// packageA/pages/complaintDispatch/complaintDispatch.js
const app = getApp();
import CommonService from '../../../utils/service/commonService.js';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
const util = require('../../../utils/util');
import Base64 from '../../../utils/Base64.js';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //当前用户
    user: null,
    //传参
    paramObj:null,
    //传参来的id
    id:null,
    //修改信息回显
    editInfo:{},
    //提交按钮禁用
		disabled:false,
		//选择框
    showSelect:false,
    //选择数据
    selectList:[],
    //当前选择
    selectField:'',
    //选择框标题
    selectTitle:'',
    //显示选择搜索框
    showSelectSearch:false,
    //选择框搜索
		valueSearch: '',
		//时间选择框
    showTime:false,
    //当前时间
		currentTime: new Date().getTime(),
		//最小时间
    minDate: new Date().getTime(),
    //时间格式
    formatter (type, value) {
      if (type === 'year') {
        return `${value}年`
      } else if (type === 'month') {
        return `${value}月`
      } else if (type === 'day') {
        return `${value}日`
      } else if (type === 'hour') {
        return `${value}时`
      } else if (type === 'minute') {
        return `${value}分`
      } else if (type === 'second') {
        return `${value}秒`
      }
      return value
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      user: app.globalData.userInfo
    })

    if(options.paramObj){
      let paramObj=JSON.parse(options.paramObj);
      console.log('投诉工单传参');
      console.log(paramObj);

      this.setData({
        paramObj: paramObj
      })

      if(paramObj.id){
        this.setData({
          id: paramObj.id
        })
        //获取修改数据
        this.getInfo();
      }
    }
  },

  //提交表单
  confirmForm(e){
    //避免表单重复提交-先禁用按钮
    this.setData({
      disabled:true
    })

    let td = this.data;
		let editInfo = td.editInfo;
		
		//工单类型必填
		if(!editInfo.type){
      Toast.fail('请选择工单类型');
      return;
		}
		
		//处理人必填
		if(!editInfo.handler){
      Toast.fail('请选择处理人');
      return;
    }

    let param={
      className:'complaintOrder',
      data:{
        id: td.id,
        //工单类型
        type: editInfo.type,
        //处理人
				handler: editInfo.handler,
				//预计完成时间
				planCompletionTime: editInfo.planCompletionTime,
				//派单时间
				dispatchTime: util.timeFormat(new Date),
				//状态变为待处理（待派单0，待处理2，待验收3，已完成1）
				state: 2
      }
    }

    // console.log(param.data);
    // return;

    //避免表单重复提交
    Toast.loading({
      duration: 0,
      forbidClick: true,
      message: '数据提交中...'
    });

    CommonService.goSave(param).then(res=>{
      this.setData({
        disabled:false
      })
      if (res.statusCode == 200 && res.data.success == true){
				Toast.success('成功');

				//给处理人推送消息
				this.pushMessage(param.data);

        setTimeout(() => {
          //返回列表页并刷新数据
          this.backAndRefresh();
        }, 1000);
      }else if(res.statusCode==202){
        Toast.fail('您操作太快了,请勿重复提交');
      }else{
        Toast.fail('操作失败');
      }
    }).catch((error) => {
      Toast.fail('操作失败');
    })  
  },

  //获取修改数据
  getInfo(){
    let param = {
      isAuth: false,
      className: 'complaintOrder',
      data: {
        id: this.data.id,
				selectFields: ['id','project','place','problem','name','createUser','phone','createDate','pic'],
				nbl: Base64.encode(util.timeFormatDay(new Date()))
      }
    }

    CommonService.goFindList(param).then(res => {
      if(res.data.data && res.data.data.result && res.data.data.result.length) {
				let result=res.data.data.result[0];
				
        //投诉时间（创建时间）
        if(result.createDate){
          result.self_createDate=util.timeFormat(result.createDate);
				}

				//预计完成时间（一天后）
				result.planCompletionTime = util.timeFormatDay(util.countNextDay(new Date(),1)) + ' 23:59:59'

        console.log('投诉工单详情');
        console.log(result);
       
        this.setData({
          editInfo: result
        })
      }
    }).catch((error) => {
    })
  },

  //非空验证（field要先去掉空格）
  formNotEmpty(field,messageField,messageCon){
    if(!field){
      let obj = {};
      obj[messageField] = messageCon;
      obj['disabled'] = true;
      this.setData(obj);
      return false;
    }else{
      return true;
    }
  },

  //用户输入时清除错误提示
  clearMessage(e) {
    let field = e.target.dataset.message;
    let obj = {};
    obj[field] = "";
    obj['disabled'] = false;
    this.setData(obj);
  },  

  //获取图片上传组件的传值
  getUploadUrl(data){
    let imgUrls=data.detail;
    if(imgUrls.length){
      let pic='editInfo.completionPic';
      this.setData({
        [pic]: imgUrls
      })
    }else{
			this.setData({
        [pic]: null
      })
		}

		this.setData({
			disabled: false
		})
  },

  //预览图片
  onPreviewImage(e) {
    let detail = e.target.dataset.detail;
    let src = e.target.dataset.src;

    wx.previewImage({
      current: src,
      urls: detail
    })
  },

  //返回列表页并刷新数据
  backAndRefresh(){
    let pages = getCurrentPages();
    let prevPage = pages[pages.length - 2];

    prevPage.refreshListAndPage();
    wx.navigateBack();
	},
	
	//显示选择框
  onShowSelect(e){
    this.setData({
      selectList: []
    })

    let dataset=e.currentTarget.dataset;
    let field=dataset.field;

    this.setData({
      showSelect: true,
      selectField: field
    })

    //工单类型
    if(field=='type'){
      this.setData({
        selectTitle: '工单类型',
        showSelectSearch: false
      })
      this.getTypeList();
		}
		
		//处理人
    if(field=='handler'){
      this.setData({
        selectTitle: '处理人',
        showSelectSearch: true
      })
      this.getUserList();
    }
  },

  //隐藏选择框
  onCloseSelect(){
    this.setData({
      showSelect: false,
      valueSearch: '',
      disabled: false
    })
  },

  //确认选项
  onConfirmSelect(e){
    let selectField=this.data.selectField;
    let id=null,name=null,obj=null;

    //工单类型
    if(selectField=='type'){
      obj='editInfo.type';
		}
		
		//处理人
    if(selectField=='handler'){
      obj='editInfo.handler';
    }

    if(id && name){
      this.setData({
        [id]:e.detail.value.id,
        [name]:e.detail.value.text
      })
    }

    if(obj){
      this.setData({
        [obj]:e.detail.value.obj
      })
    }

    this.onCloseSelect();
  },

  //选择框搜索
  onChangeSelectVal(e){
    let selectField=this.data.selectField;

    this.setData({
      valueSearch: e.detail
    })

    //处理人
    if(selectField=='handler'){
      this.getUserList();
    }
  },

  //查询工单类型
  getTypeList(){
    let param = {
      isAuth: false,
      className: 'dictionary',
      data: {
        searchAll: true,
        key: 'complaintOrderType',
        selectFields: ['id','name']
      }
    }
    
    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.result.length){
        let result=res.data.data.result;
        let arr=[];
        result.forEach(item => {
          arr.push({
            text:item.name,
            id:item.id,
            obj:{
              id:item.id,
              name:item.name
            }
          });
        });

        this.setData({
          selectList: arr
        })
      }
    }).catch((error) => {
    })
	},

	//查询人员
  getUserList(){
    let param = {
      isAuth: true,
      className: 'user',
      data: {
        searchAll: true,
        selectFields: ['id','userName','personalPhone'],
        role:{'nin':[132]}
      }
    }

    if(this.data.valueSearch){
      param.data.userName='%' + this.data.valueSearch + '%';
    }

    CommonService.goFindList(param).then(res=>{
      if(res.data.data && res.data.data.result && res.data.data.result.length){
        let result=res.data.data.result;
        let arr=[];
        result.forEach(item => {
          arr.push({
            text:item.userName,
            id:item.id,
            obj:{
              id: item.id,
							userName: item.userName,
							phone: item.personalPhone
            }
          });
        });

        this.setData({
          selectList: arr
        })
      }
    }).catch((error) => {
    })
	},
	
	//显示时间
  onShowTime(){
    this.setData({
			showTime: true
    })
  },

  //隐藏时间
  onCloseTime(){
    this.setData({
			showTime: false
    })
  },

  //确认时间
  onConfirmTime(e) {
    let planCompletionTime = 'editInfo.planCompletionTime';
    this.setData({
      currentTime: e.detail,
      [planCompletionTime]: util.timeFormat(e.detail),
    })
    this.onCloseTime();
	},
	
	//推送消息
	pushMessage(obj){
		let info = this.data.editInfo;

		let param={
			//接收人user表id（派单人，也就是项目负责人）
			userId: [obj.handler.id],
			file: 'ownersComplaints',
			//跳转
			jump: true,
			data:{
				//项目名
				thing31: info.project.name,
				//创建时间
				time51: util.timeFormat(new Date()),
				//工单标题（投诉问题）
				thing33: info.problem,
				//发生地址（投诉地点）
				thing53: info.place,
				//工单状态
				phrase15: '待处理'
			}
		}

		CommonService.sendMessage(param).then(res=>{
    }).catch((error) => {
    })
	},

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})